<?php

namespace Agp\CoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * Agp\CoreBundle\Entity\GraficoInicio
 *
 * @ORM\Table(name="grafico_inicio")
 * @ORM\Entity(repositoryClass="Agp\CoreBundle\Repository\GraficoInicioRepository")
 */
class GraficoInicio
{
    /**
     * @var integer $codGraficoInicio
     *
     * @ORM\Column(name="cod_grafico_inicio", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $codGraficoInicio;

    /**
     * @var object $pessoa
     *
     * @ORM\ManyToOne(targetEntity="Agp\CoreBundle\Entity\Pessoa", fetch="EAGER")
     * @ORM\JoinColumn(name="cod_pessoa", referencedColumnName="cod_pessoa", onDelete="Cascade")
     */
    protected $pessoa;

    /**
     * @ORM\ManyToMany(targetEntity="Agp\CoreBundle\Entity\Atendente")
     * @ORM\JoinTable(name="grafico_inicio_atendente",
     *     joinColumns={@ORM\JoinColumn(name="cod_grafico_inicio", referencedColumnName="cod_grafico_inicio", onDelete="Cascade")},
     *     inverseJoinColumns={@ORM\JoinColumn(name="cod_atendente", referencedColumnName="cod_atendente", onDelete="Cascade")}
     * )
     * @var ArrayCollection $atendentes
     */ 
    protected $atendentes;
    
    /**
     * @ORM\ManyToMany(targetEntity="Agp\CoreBundle\Entity\Evento")
     * @ORM\JoinTable(name="grafico_inicio_evento",
     *     joinColumns={@ORM\JoinColumn(name="cod_grafico_inicio", referencedColumnName="cod_grafico_inicio", onDelete="Cascade")},
     *     inverseJoinColumns={@ORM\JoinColumn(name="cod_evento", referencedColumnName="cod_evento", onDelete="Cascade")}
     * )
     * @var ArrayCollection $eventos
     */ 
    protected $eventos;
    
    /**
     * @ORM\ManyToMany(targetEntity="Agp\CoreBundle\Entity\TerminalEmpresa")
     * @ORM\JoinTable(name="grafico_inicio_terminal_empresa",
     *     joinColumns={@ORM\JoinColumn(name="cod_grafico_inicio", referencedColumnName="cod_grafico_inicio", onDelete="Cascade")},
     *     inverseJoinColumns={@ORM\JoinColumn(name="cod_terminal_empresa", referencedColumnName="cod_terminal_empresa")}
     * )
     * 
     * @var ArrayCollection $terminais
     */ 
    protected $terminais;
    
    /**
     * @ORM\Column(name="intervalo", type="string", length=45, nullable=false)
     * @var string
     */
    protected $intervalo;
    
    const TP_VENDAS_VALOR = 'vv';
    const TP_VENDAS_QUANTIDADE = 'vq';
    /**
     * @ORM\Column(name="tipo_grafico", type="string", length=45, nullable=false)
     * @var string
     */
    protected $tipo;
    
    public function __construct() {
        $this->terminais = new ArrayCollection;
        $this->eventos = new ArrayCollection;
        $this->atendentes = new ArrayCollection;
    }

    public function getCodGraficoInicio() {
        return $this->codGraficoInicio;
    }

    public function setCodGraficoInicio($codGraficoInicio) {
        $this->codGraficoInicio = $codGraficoInicio;
    }

    public function getPessoa() {
        return $this->pessoa;
    }

    public function setPessoa($pessoa) {
        $this->pessoa = $pessoa;
    }
    
    public function getIntervalo() {
        return $this->intervalo;
    }

    public function setIntervalo($intervalo) {
        $this->intervalo = $intervalo;
    }

    /**
     * Add $terminal
     *
     * @param Agp\CoreBundle\Entity\TerminalEmpresa
     */
    public function addterminal(\Agp\CoreBundle\Entity\TerminalEmpresa $terminal)
    {
        $this->terminais[] = $terminal;
    }
    
    /**
     * Set terminais
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function setTerminais($terminais)
    {
        return $this->terminais = $terminais;
    }

    /**
     * Get terminais
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getTerminais()
    {
        return $this->terminais;
    }
    
    public function getTipo() {
        return $this->tipo;
    }

    public function setTipo($tipo) {
        $this->tipo = $tipo;
    }

    public static function getTipoList(){
        return array (self::TP_VENDAS_VALOR => 'Vendas por data (valor total)',
                     self::TP_VENDAS_QUANTIDADE => 'Vendas por data (quantidade)');
    }
    
    public function getAtendentes() {
        return $this->atendentes;
    }

    public function setAtendentes($atendentes) {
        $this->atendentes = $atendentes;
    }

    public function getEventos() {
        return $this->eventos;
    }

    public function setEventos($eventos) {
        $this->eventos = $eventos;
    }

}
